package com.company.config;

/*
   bean的生命周期
        bean的创建 --- 初始化 --- 销毁过程
   容器管理bean的生命周期
   自定义初始化和销毁方法
   1 通过@Bean指定 init-method，destroy-method
   2 通过Bean实现InitializingBean（定义初始化逻辑），DisposableBean（定义销毁）

   4:BeanPostProcessor :bean的后置处理器
       在bean初始化前后进行一些工作
       postProcessorBeforeInitialization 在初始化之前开始工作
       postProcessorAfterInitialization  在初始化之后开始工作
          populateBean 给bean进行属性赋值
          applyBeanPostProcessorBeforeInitialization 遍历容器得到所有的BeanPostProcessor，挨个执行 postProcessorBeforeInitialization
          invokeInitMethods 执行初始化
          applyBeanPostProcessorAfterInitialization


 */

import com.company.bean.Car;
import org.springframework.beans.factory.annotation.Configurable;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.ComponentScan;

@ComponentScan("com.company")
@Configurable
public class MainConfigOfLifeCycle {
    @Bean(initMethod = "init", destroyMethod = "detory")
    public Car car() {
        return new Car();
    }
}
